From 6e300952932b931327ea39733b25ca3cbb7df555 Mon Sep 17 00:00:00 2001 From: Ewan Mellor Date: Thu, 26 Oct 2006 15:56:44 +0100 Subject: [PATCH] Implement HostCPU.{vendor,speed,modelname}. Signed-off-by: Ewan Mellor --- tools/libxen/include/xen_host_cpu.h | 24 ++++++++++++ tools/libxen/src/xen_host_cpu.c | 61 +++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/tools/libxen/include/xen_host_cpu.h b/tools/libxen/include/xen_host_cpu.h index c07c4d4d30..7a5896d602 100644 --- a/tools/libxen/include/xen_host_cpu.h +++ b/tools/libxen/include/xen_host_cpu.h @@ -66,6 +66,9 @@ typedef struct xen_host_cpu_record char *uuid; struct xen_host_record_opt *host; uint64_t number; + char *vendor; + uint64_t speed; + char *modelname; struct xen_cpu_feature_set *features; double utilisation; } xen_host_cpu_record; @@ -191,6 +194,27 @@ extern bool xen_host_cpu_get_number(xen_session *session, uint64_t *result, xen_host_cpu host_cpu); +/** + * Get the vendor field of the given host_cpu. + */ +extern bool +xen_host_cpu_get_vendor(xen_session *session, char **result, xen_host_cpu host_cpu); + + +/** + * Get the speed field of the given host_cpu. + */ +extern bool +xen_host_cpu_get_speed(xen_session *session, uint64_t *result, xen_host_cpu host_cpu); + + +/** + * Get the modelname field of the given host_cpu. + */ +extern bool +xen_host_cpu_get_modelname(xen_session *session, char **result, xen_host_cpu host_cpu); + + /** * Get the features field of the given host_cpu. */ diff --git a/tools/libxen/src/xen_host_cpu.c b/tools/libxen/src/xen_host_cpu.c index a6f4a6a630..a18ded8150 100644 --- a/tools/libxen/src/xen_host_cpu.c +++ b/tools/libxen/src/xen_host_cpu.c @@ -48,6 +48,15 @@ static const struct_member xen_host_cpu_record_struct_members[] = { .key = "number", .type = &abstract_type_int, .offset = offsetof(xen_host_cpu_record, number) }, + { .key = "vendor", + .type = &abstract_type_string, + .offset = offsetof(xen_host_cpu_record, vendor) }, + { .key = "speed", + .type = &abstract_type_int, + .offset = offsetof(xen_host_cpu_record, speed) }, + { .key = "modelname", + .type = &abstract_type_string, + .offset = offsetof(xen_host_cpu_record, modelname) }, { .key = "features", .type = &xen_cpu_feature_set_abstract_type_, .offset = offsetof(xen_host_cpu_record, features) }, @@ -72,6 +81,8 @@ xen_host_cpu_record_free(xen_host_cpu_record *record) free(record->handle); free(record->uuid); xen_host_record_opt_free(record->host); + free(record->vendor); + free(record->modelname); xen_cpu_feature_set_free(record->features); free(record); } @@ -167,6 +178,56 @@ xen_host_cpu_get_number(xen_session *session, uint64_t *result, xen_host_cpu hos } +bool +xen_host_cpu_get_vendor(xen_session *session, char **result, xen_host_cpu host_cpu) +{ + abstract_value param_values[] = + { + { .type = &abstract_type_string, + .u.string_val = host_cpu } + }; + + abstract_type result_type = abstract_type_string; + + *result = NULL; + XEN_CALL_("host_cpu.get_vendor"); + return session->ok; +} + + +bool +xen_host_cpu_get_speed(xen_session *session, uint64_t *result, xen_host_cpu host_cpu) +{ + abstract_value param_values[] = + { + { .type = &abstract_type_string, + .u.string_val = host_cpu } + }; + + abstract_type result_type = abstract_type_int; + + XEN_CALL_("host_cpu.get_speed"); + return session->ok; +} + + +bool +xen_host_cpu_get_modelname(xen_session *session, char **result, xen_host_cpu host_cpu) +{ + abstract_value param_values[] = + { + { .type = &abstract_type_string, + .u.string_val = host_cpu } + }; + + abstract_type result_type = abstract_type_string; + + *result = NULL; + XEN_CALL_("host_cpu.get_modelname"); + return session->ok; +} + + bool xen_host_cpu_get_features(xen_session *session, struct xen_cpu_feature_set **result, xen_host_cpu host_cpu) { -- 2.30.2